package myTeam.timeShop.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import myTeam.timeShop.bean.TbDemand;
import myTeam.timeShop.dao.DemandDao;
@Repository("demandDao")
public class DemandDaoImpl implements DemandDao {
	@Autowired
	SessionFactory sessionFactory;
	
	private Session getSession() {
		return sessionFactory.getCurrentSession();
	}


	@Override
	public TbDemand load(String id) {
		// TODO 自动生成的方法存根
		return this.getSession().load(TbDemand.class, id);
	}

	@Override
	public TbDemand get(String id) {
		// TODO 自动生成的方法存根
		return this.getSession().get(TbDemand.class, Integer.valueOf(id));
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<TbDemand> findAll() {
		// TODO 自动生成的方法存根
		return this.getSession().createQuery("from TbDemand").list();
	}

	@Override
	public void persist(TbDemand entity) {
		// TODO 自动生成的方法存根
		this.getSession().persist(entity);
	}

	@Override
	public String save(TbDemand entity) {
		// TODO 自动生成的方法存根
		return (String) this.getSession().save(entity).toString();
	}

	@Override
	public void saveOrUpdate(TbDemand entity) {
		// TODO 自动生成的方法存根
		this.getSession().saveOrUpdate(entity);
	}

	@Override
	public void delete(String id) {
		// TODO 自动生成的方法存根
		this.getSession().delete(id);
	}

	@Override
	public void flush() {
		// TODO 自动生成的方法存根
		this.getSession().flush();
	}


	/* （非 Javadoc）
	 * @see myTeam.timeShop.dao.DemandDao#getUserDemand(java.lang.String, java.lang.String)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<TbDemand> getUserDemand(String pageNo, String size,String userId) {
		
		return this.getSession().getNamedQuery("getUserDemand").setString(0, userId).setMaxResults(Integer.valueOf(size)).setFirstResult(Integer.valueOf(pageNo)).list();
		
	}


	/* （非 Javadoc）
	 * @see myTeam.timeShop.dao.DemandDao#getUserRequestDemand(java.lang.String, java.lang.String, java.lang.String)
	 */
	@Override
	public List<TbDemand> getUserRequestDemand(String pageNo, String size,
			String filterUserId) {

		@SuppressWarnings("unchecked")
		List<TbDemand> list= this.getSession().getNamedQuery("getUserRequestDemand").setFirstResult(Integer.valueOf(pageNo)).setMaxResults(Integer.valueOf(size)).setString(0, filterUserId).list();

		return list;
		
	}


	/* （非 Javadoc）
	 * @see myTeam.timeShop.dao.DemandDao#getAllDemand(java.lang.String, java.lang.String)
	 */

	@SuppressWarnings("unchecked")
	@Override
	public List<TbDemand> getAllDemand(String pageNo, String size) {
		
		return this.getSession().getNamedQuery("getAllDemand").setFirstResult(Integer.valueOf(pageNo)).setMaxResults(Integer.valueOf(size)).list();
	}


	/* （非 Javadoc）
	 * @see myTeam.timeShop.dao.DemandDao#getMySchoolDemand(java.lang.String, java.lang.String, java.lang.String)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<TbDemand> getMySchoolDemand(String userSchool, String pageNo,
			String size) {
		// TODO 自动生成的方法存根
		return this.getSession().getNamedQuery("getMySchoolDemand").setMaxResults(Integer.valueOf(size)).setFirstResult(Integer.valueOf(pageNo)).setString(0,userSchool).list();
	}

}
